#ifndef RECTANGLE_H
#define RECTANGLE_H

#include <algorithm/shared/data/topology/geometry/Geometry.h>
#include <algorithm/shared/utils/Vec2.h>
#include <utils/ParaUtils.h>

#include <boost/describe.hpp>

namespace solar
{
    // 平面，不需要额外设置参数
    class Rectangle : public Geometry
    {
        public:
            Rectangle(Vec2 size = Vec2(1, 1)) : size_(size) {}
            [[nodiscard]] auto getType() const -> GeometryType override { return type_; }
#include <utils/class_name.inc>

        private:
            Vec2 size_; // size_.x--长，size_.y--宽
            GeometryType type_ = GeometryType::kGeometryRectangle;
            BOOST_DESCRIBE_CLASS(Rectangle, (Geometry), (), (), (size_))
    };
} // namespace solar
#define CURRENT_CLASS_NAME Rectangle
#include <utils/class_describe_header.inc>
SOLAR_DESCRIBE_CLASS(Rectangle, (Geometry), (), (), (size_))
#endif
